/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.controller;

import br.com.documentar.interfacee.InterfaceController;
import br.com.documentar.model.ClienteModel;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class ClienteController implements InterfaceController<ClienteModel> {

    private final br.com.documentar.DAO.ClienteDAO dao = new br.com.documentar.DAO.ClienteDAO();

    @Override
    public ClienteModel getModel() {
        return new ClienteModel();
    }

    @Override
    public DefaultTableModel insertTableModel(ClienteModel model) {
        model.getModelTable().setNumRows(0);
        for (br.com.documentar.model.ClienteModel p : dao.getDados(model)) {
            model.getModelTable().addRow(new Object[]{
                p.getCodigo(),
                p.getRevendaModel().getCodigo() + " - " + p.getRevendaModel().getNome(),
                p.getClientePaiModel().getCodigo() + " - " + p.getClientePaiModel().getNomeRazao(),
                p.getNomeRazao(),
                p.getNomeFantasia(),
                p.getNumeroDocumento(),
                p.getEmail(),
                p.getTelefoneEmpresa1(),
                p.getTelefoneEmpresa2(),
                p.getCodigoUnidadeNegocio(),
                p.getContato(),
                p.getCelularContato1(),
                p.getCelularContato2(),
                p.getCelularContato3(),
                p.getTelefoneContato1(),
                p.getTelefoneContato2(),
                p.getTelefoneContato3(),
                p.getEmailContato(),
                p.getEndereco(),
                p.getComplementoEndereco(),
                p.getBairro(),
                p.getCep(),
                p.getCidade(),
                p.getEstado(),
                p.getUfEstado(),
                p.getPais(),
                p.getAtivo()});
        }
        return model.getModelTable();
    }

    @Override
    public DefaultTableModel getDadosTableModel(ClienteModel model) {
        return insertTableModel(model);
    }

    @Override
    public boolean setDados(ClienteModel model) {
        return dao.setDados(model);
    }

    @Override
    public DefaultComboBoxModel getDadosComboBoxModel(ClienteModel model) {
        return insertComboBoxModel(model);
    }

    public DefaultComboBoxModel getDadosComboBoxModel(ClienteModel model, String aux) {
        return insertComboBoxModel(model, "A");
    }

    @Override
    public DefaultComboBoxModel insertComboBoxModel(ClienteModel model) {
        for (br.com.documentar.model.ClienteModel p : dao.getDados(model)) {
            model.getModelComboBox().addElement(p.getCodigo() + " - " + p.getNomeRazao());
        }
        return model.getModelComboBox();
    }

    public DefaultComboBoxModel insertComboBoxModel(ClienteModel model, String aux) {
        for (br.com.documentar.model.ClienteModel p : dao.getDados(model)) {
            model.getModelComboBox().addElement(p.getCodigo() + " - Fantasia: " + p.getNomeFantasia() + " - Razão:" + p.getNomeRazao() + " - Unidade: " + p.getCodigoUnidadeNegocio());
        }
        return model.getModelComboBox();
    }

    /**
     * Metodo responsável por retornar a lista de clliente do ERP
     *
     * @param model
     * @return
     */
    public List<ClienteModel> getDadosERP(ClienteModel model) {
        return dao.getDadosERP(model);
    }

    /**
     * Metodo responsável por retornar uma lista contendo os clientes
     * consultados
     *
     * @param model
     * @return
     */
    public List<ClienteModel> getDados(ClienteModel model) {
        return dao.getDados(model);
    }

    /**
     * Metodo responsável por retornar a lista de cliente do Frente de Loja
     *
     * @param model
     * @return
     */
    public List<ClienteModel> getDadosFrenteLoja(ClienteModel model) {
        return dao.getDadosFrenteLoja(model);
    }
}
